﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using SOAPServices.Persistencia;
using SOAPServices.Dominio;

namespace SOAPServices
{
    // NOTA: puede usar el comando "Rename" del menú "Refactorizar" para cambiar el nombre de clase "Empleados" en el código, en svc y en el archivo de configuración a la vez.
    public class Empleados : IEmpleados
    {
        private EmpleadoDAO empleadoDAO = null;
        private EmpleadoDAO EmpleadoDAO
        {
            get
            {
                if (empleadoDAO == null)
                    empleadoDAO = new EmpleadoDAO();
                return empleadoDAO;
            }
        }


        public Dominio.Empleado CrearEmpleado(string nombre, string apellido, string fecha, string telefono, int estado)
        {
            
            Empleado empleadoACrear = new Empleado()
            {
                Nombre = nombre,
                Apellido = apellido,
                FechaNacimiento = fecha,
                Telefono=telefono,
                Estado=estado,
            };
            return EmpleadoDAO.Crear(empleadoACrear);
        }

        public Dominio.Empleado ObtenerEmpleado(int codigo)
        {
            return EmpleadoDAO.Obtener(codigo);
        }

        public Dominio.Empleado ModificarEmpleado(int codigo, string nombre, string apellido, string fecha, string telefono, int estado)
        {
            Empleado empleadoAModificar = new Empleado()
            {
                Codigo=codigo,
                Nombre = nombre,
                Apellido = apellido,
                FechaNacimiento = fecha,
                Telefono = telefono,
                Estado = estado,
            };
            return EmpleadoDAO.Crear(empleadoAModificar);
        }

        public void EliminarEmpleado(int codigo)
        {
            Empleado empleadoExistente = EmpleadoDAO.Obtener(codigo);
            EmpleadoDAO.Eliminar(empleadoExistente);
        }

        public List<Dominio.Empleado> ListarEmpleados()
        {
            return EmpleadoDAO.ListarTodos().ToList();
        }
    }
}
